/**
 * @task 给数组添加方法 
 * @author wsq
 * @date 2022-4-17
 */

//给函数增加 method 方法
Function.prototype.method= function (name,func){
    // 增加之前先判断是否已经存在
    if(!this.prototype[name]){
        this.prototype[name]=func;
    }
    return this;
}
// 添加 reduce 方法
Array.method('reduce',function(f,value) {
    var i;
    for(i=0;i<this.length;i+=1) {
        value = f(this[i],value);
    }
    return value;
});

var data = [4,8,15,16,23,42];
// 数组相加
var add = function(a,b) {
    return a+b;
};
// 数组相乘
var mult = function(a,b) {
    return a*b;
};
var sum = data.reduce(add,0);  // 108
console.log(sum);
var produce = data.reduce(mult,1); //7418880
console.log(produce);

// 给data数组增加一个total方法
data.total = function () {
    return this.reduce(add,0);
};
total = data.total();  //total是108
console.log(total);